﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;

namespace Siav
{
    public partial class frmPesquisaPedidos : Siav.BaseBuscas
    {
        public frmPesquisaPedidos()
        {
            InitializeComponent();
        }

        SiavEntities Entidades = new SiavEntities();
        public string CodigoSelecionado = "-1";
        public string FormClientes = "";
        private IEnumerable<PedidoCabeca> Selecao;

        public string Tipo(string pParametros)
        {
            string Retorno = "";
            switch (pParametros)
            {
                case "PP":
                    Retorno = "P";
                    break;
                case "PPronto":
                    Retorno = "F";
                    break;
                case "Orc":
                    Retorno = "O";
                    break;
                case "":
                    Retorno = "";
                    break;
                case "PEntregues":
                    Retorno = "E";
                    break;
            }
            return Retorno;
        }
        public void BuscarPedidos(string pParametro)
        {
            lstResultados.Items.Clear();
            try
            {
               // string Retorno = "";
                //string ValorB = "";
                pProgress.Value = 5;
                var SPedido = (from pe in Entidades.PedidoCabeca
                               where pe.Clientes.NomeFantasia.Contains(pParametro) || pe.Clientes.RazaoSocial.Contains(pParametro) || pe.Clientes.CPF_CNPJ.Contains(pParametro) || pe.Clientes.Telefone.Contains(pParametro)
                               select pe).ToList();
                //Selecao = SPedido.Where(P => P.Status.Equals("P");
                if (PP.Checked)
                {
                    Selecao = SPedido.Where(p => p.Status == "P"); // Produção
                }
                else if (PEntregues.Checked)
                {
                    Selecao = SPedido.Where(p => p.Status == "E"); // Entregue
                }
                else if (Orc.Checked)
                {
                    Selecao = SPedido.Where(p => p.Status == "O"); //Orçamento
                }
                else if (PPronto.Checked)
                {
                    Selecao = SPedido.Where(p => p.Status == "F"); //Pronto
                }

                else
                {
                    Selecao = SPedido.Where(p => p.Status == "");
                }
                pProgress.Value = 50;

                foreach (PedidoCabeca Ped in Selecao)
                {
                    string RetornoNFE;

                    ListViewItem item = new ListViewItem();
                    if (Ped.Status == "F")
                    {
                        item.BackColor = Color.YellowGreen;
                    }
                    if (Ped.Status == "P")
                    {
                        item.BackColor = Color.Yellow;
                    }
                    if (Ped.ChaveNFe == null)
                    {
                        RetornoNFE = "NÃO";
                    }
                    else
                    {
                        RetornoNFE = "SIM";
                    }
                    item.Text = Ped.CodigoPedido.ToString();
                    item.SubItems.Add(Ped.DataHoraPedido.ToShortDateString());
                    item.SubItems.Add(Ped.Clientes.NomeFantasia + " " + Ped.Clientes.RazaoSocial);
                    item.SubItems.Add(Ped.Clientes.CPF_CNPJ);
                    item.SubItems.Add(RetornoNFE);
                    lstResultados.Items.Add(item);
                }
                pProgress.Value = 100;
            }
            catch
            {

            }


        }

        private void txtParametro_TextChanged(object sender, EventArgs e)
        {
            if (txtParametro.TextLength > 1)
            {
                BuscarPedidos(txtParametro.Text);
            }
        }

        private void lstResultados_DoubleClick(object sender, EventArgs e)
        {

            CodigoSelecionado = lstResultados.SelectedItems[0].Text;
            if (FormClientes == "SIM")
            {
                frmPedido PedidosCliente = new frmPedido();
                PedidosCliente.txtCdPedido.Text = CodigoSelecionado;
                PedidosCliente.btnCarregarPedido_Click(sender, e);
                PedidosCliente.ShowDialog();
            }
            Close();
        }

        private void PF_CheckedChanged(object sender, EventArgs e)
        {
            BuscarPedidos(txtParametro.Text);
        }

        private void PP_CheckedChanged(object sender, EventArgs e)
        {
            BuscarPedidos(txtParametro.Text);
        }

        private void PO_CheckedChanged(object sender, EventArgs e)
        {
            BuscarPedidos(txtParametro.Text);
        }

        private void btnEmitirNota_Click(object sender, EventArgs e)
        {
            frmEmiteNFe NFe = new frmEmiteNFe();
            NFe.CodigoPedido = lstResultados.SelectedItems[0].Text;
            NFe.ShowDialog();
            NFe.Dispose();
        }

        private void lstResultados_SelectedIndexChanged(object sender, EventArgs e)
        {
           
          try
            {
                btnAbrirPedido.Enabled = true;
                CodigoSelecionado = lstResultados.SelectedItems[0].Text;
                int cSel = int.Parse(CodigoSelecionado);
                var Estado = (from ped in Entidades.PedidoCabeca
                              where ped.CodigoPedido.Equals(cSel)
                              select ped).FirstOrDefault();
                if (Estado.Status == "P")
                {
                    btnBaixa.Enabled = true;
                }
                else
                {
                    btnBaixa.Enabled = false;
                }
                if (Estado.Status == "F")
                {
                    if (lstResultados.SelectedItems[0].SubItems[4].Text != "SIM")
                    {
                        //btnEmitirNota.Enabled = true;
                    }
                    else
                    {
                        //btnEmitirNota.Enabled = false;
                    }
                }
            }

            catch
            {

            }
        }

        private void frmPesquisaPedidos_Load(object sender, EventArgs e)
        {

        }

        private void btnBaixa_Click(object sender, EventArgs e)
        {
            try
            {
                frmBaixaItensPedidos BaixaItens = new frmBaixaItensPedidos();
                BaixaItens.txtNumeroPedido.Text = lstResultados.SelectedItems[0].Text;
                BaixaItens.btnCarregarPedido_Click(sender, e);
                BaixaItens.ShowDialog();
                //CarregaPedidos(txtFiltro.Text);
                Close();
            }
            catch
            {
                MessageBox.Show("Primeiro selecione o pedido na lista", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnImprimirFicha_Click(object sender, EventArgs e)
        {
            try
            {
               int CodigoPedido = int.Parse(lstResultados.SelectedItems[0].Text);
                frmFichaPedido ficha = new frmFichaPedido();
                ficha.CodigoPedido = CodigoPedido;
                ficha.ShowDialog();
                ficha.Dispose();
            }
            catch 
            {
            	MessageBox.Show("Primeiro selecione o pedido na lista", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btnAbrirPedido_Click(object sender, EventArgs e)
        {
            lstResultados_DoubleClick(sender, e);
        }

        private void Orc_CheckedChanged(object sender, EventArgs e)
        {
            BuscarPedidos(txtParametro.Text);
        }

        private void PPronto_CheckedChanged(object sender, EventArgs e)
        {
            BuscarPedidos(txtParametro.Text);
        }

        private void PEntregues_CheckedChanged(object sender, EventArgs e)
        {
            BuscarPedidos(txtParametro.Text);
        }
    }
}
